#ifndef DIGITS_CONTEINER_H
#define DIGITS_CONTEINER_H

#include <algorithm>

struct digits_container
{
public:
   digits_container():
      size_(0),
      capacity_(1)
   {}

   digits_container(const digits_container& x);

   ~digits_container();
   int size() const;
   long long back();

   
   void push_back(long long x);
   void pop_back();
   void resize(int size);
   void swap(digits_container& a);
   void reserve(int size);

   long long& operator[](int i);
   long long at(int i) const;

   digits_container& operator=(digits_container x);

private:
   int size_;
   
   int capacity_;
   
   union digits
   {
      long long digit_;
      long long* digits_;
   };

   digits digits_;

   void shrink();
};

#endif